package com.mb;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import com.facade.VotoFacade;
import com.model.Voto;

@ManagedBean
@RequestScoped
public class VotoMB {

	@EJB
	private VotoFacade votoFacade;

	private static final String CREATE_VOTO = "createVoto";
	private static final String DELETE_VOTO = "deleteVoto";
	private static final String UPDATE_VOTO = "updateVoto";
	private static final String LIST_ALL_VOTOS = "listAllVotos";
	private static final String STAY_IN_THE_SAME_PAGE = null;

	private Voto voto;

	public Voto getVoto() {
		if (voto == null) {
			voto = new Voto();
		}
		return voto;
	}

	public void setVoto(Voto voto) {
		this.voto = voto;
	}

	public List<Voto> getAllVotos() {
		return votoFacade.findAll();
	}

	public String updateVotoStart() {
		return UPDATE_VOTO;
	}

	public String updateVotoEnd() {
		try {
			votoFacade.update(voto);
		} catch (EJBException e) {
			sendErrorMessageToUser("Error. call the adm");
			return STAY_IN_THE_SAME_PAGE;
		}

		sendInfoMessageToUser("Operation Complete: Update");
		return LIST_ALL_VOTOS;
	}
	public String deleteVotoStart(){
		return DELETE_VOTO;
	}
	public String deleteVotoEnd(){
		try{
			votoFacade.delete(voto);
		}catch(EJBException e ){
			sendErrorMessageToUser("Error. Call the ADM");
			return STAY_IN_THE_SAME_PAGE;
		}
		sendInfoMessageToUser("Operation Complete: Delele");
		return LIST_ALL_VOTOS;
	}
	private String listAllVotos(){
		return LIST_ALL_VOTOS;
	}
	private void sendInfoMessageToUser(String message){
        FacesContext context = getContext();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, message, message));
    }
 
    private void sendErrorMessageToUser(String message){
        FacesContext context = getContext();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message));
    }
 
    private FacesContext getContext() {
        FacesContext context = FacesContext.getCurrentInstance();
        return context;
    }
	
}
